[レポート] IoT もくもく会(SORACOMとラズパイ編)
こんにちは、坂巻です。
先日、株式会社ソラコム様のイベント、
IoT もくもく会(SORACOMとラズパイ編)に参加してきました。
ハンズオンの様子についてレポートします。
目次
- はじめに
- 機材について
- ハンズオン
- ユーザーコンソールを使用してAir SIMを管理する
- Raspberry Piへの接続
- Air SIMを使って、インターネットに接続する
- ユーザーコンソールによる通信の確認
- 超音波センサーを使って距離を計測する
- クラウドにデータを送る
- Twitterと連携してみる
- おわりに
はじめに
本イベントの概要です。
IoTもくもく会は、IoT に取り組み始めた方向けに、ラズパイ(Raspberry Pi)とセンサー、3Gのドングルをソラコムからお貸し出しし、テキストに沿ってセルフラーニング(自習形式)で進めていただくイベントです。この会では、センシングデータを SORACOM のセルラーネットワークを経由して、可視化をするまでを体験いただくハンズオンテキストと、機材一式をご用意しています。
機材について
ハンズオンにて提供された機材一式です。
ハンズオン
ユーザーコンソールを使用してAir SIMを管理する
テキストに従い、SORACOMユーザーコンソール(以降、ユーザーコンソール)を使用して、
SORACOM AirのSIM(以降、Air SIM)をSORACOMのユーザーアカウントに登録します。
Raspberry Piへの接続
Raspberry Piは事前に設定が済んでいるようで、
電源をいれると応答がありsshで接続ができました。
$ ping 192.168.123.106 PING 192.168.123.106 (192.168.123.106): 56 data bytes 64 bytes from 192.168.123.106: icmp_seq=0 ttl=64 time=8.108 ms (略) ssh pi@192.168.123.106 (略) pi@raspberrypi ~ $
Air SIMを使って、インターネットに接続する
USBドングルにAir SIMをはめ込みます。
物理的にはめ込むだけですが、このハンズオンの一番の難関との事です。
多少苦戦しましたが、
USBドングルにAir SIMをはめ込むことができましたので、
Raspberry Piに接続します。
USBドングルを使用するために、
Raspberry Piにパッケージをインストールします。
pi@raspberrypi ~ $sudo apt-get install -y usb-modeswitch wvdial
Raspbianのバージョンによっては、
usb-modeswitchパッケージがデフォルトでインストールされている事があるようです。
続いて、接続設定スクリプトをダウンロードして実行します。
pi@raspberrypi:~ $ curl -O https://soracom-files.s3.amazonaws.com/setup_air.sh
環境が整いインターネット接続が確認できました。
pi@raspberrypi ~ $ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=58 time=331 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=58 time=389 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=58 time=389 ms
ユーザーコンソールによる通信の確認
ユーザーコンソールでは、
データ通信量をAir SIMごとにチャート形式で確認することができます。
なお、データ通信量が反映されるまでに5〜10分程度かかるそうです。
また、ユーザーコンソールで、通信量にしきい値を設定を行うと、
メール通知や通信帯域制限行うことができます。
今回は、通知を有効にし通信量1MiBでしきい値を設定してみました。
意図的に1MiBのダウンロードを実施したところ、以下のメール通知がありました。
超音波センサーを使って距離を計測する
Raspberry PiのGPIOとブレッドボードを接続します。
GPIOの配線を間違えると、煙があがったり燃えたりする事があるようです。
GPIOの詳細についてはこちらをご確認ください。
続いて、センサー値を読み込むプログラムをダウンロードします。
pi@raspberrypi:~ $ curl -O http://soracom-files.s3.amazonaws.com/sensor_test.py
プログラムを実行して、
センサーの前に障害物をおくと、リアルタイムで距離を確認することができました。
pi@raspberrypi ~ $ python sensor_test.py 距離: 40.8 cm 距離: 40.4 cm 距離: 39.8 cm (略)
ちなみに、センサーは超音波を出力し、 戻りの速度で距離を計算しているようです。
クラウドにデータを送る
センサーで障害物を検知した時に、SORACOM Beamを使ってクラウド(Kibana)へデータを送ります。
以下の仕組みでクラウドにデータが送信されます。
ユーザーコンソールより、SORACOM Beamの設定の転送先を指定します。
データ送信用のプログラムをダウンロードし実行します。
pi@raspberrypi:~ $ curl -O http://soracom-files.s3.amazonaws.com/send_to_cloud.py pi@raspberrypi:~ $ python send_to_cloud.py - メタデータサービスにアクセスして IMSI を確認中 ... 440103217184488 - 条件設定 障害物を 10 cm 以内に連続 3 回検知したらクラウドにデータを送信します センサーを手で遮ったり、何か物を置いてみたりしてみましょう - 準備完了 距離(cm): 5.0 <= 10 , 回数: 1 / 3 距離(cm): 5.1 <= 10 , 回数: 2 / 3 距離(cm): 5.1 <= 10 , 回数: 3 / 3 - ステータスが 'in'(何か物体がある) に変化しました - Beam 経由でデータを送信します
Kibanaにアクセスすると、データの送信が確認できました。
Twitterと連携してみる
IFFTTでアプレット(サービス同士の組み合わせ)を作成します。
先程同様、ユーザーコンソールより、SORACOM Beamの設定の転送先を指定します。
センサーの前に障害物をおくと、Twitterとの連携が確認できました。
おわりに
はじめてソラコム様のハンズオンに参加させて頂きました。
当日使用した手順書は、解説付きで親切な手順書になっており、
短い時間のなかでもIoTの楽しさを実感することができました。
Raspberry Piを入手したら、AWS Greengrassと連携してみたいと思いました。